home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / disasm.tar / disasm / dis48.c < prev    next >
C/C++ Source or Header  |  1990-04-25  |  1KB  |  88 lines

  1. #include "dis48.h"
  2. #include <fcntl.h>
  3.  
  4. #ifdef notdef
  5. void
  6. StuffNybble(char *mem, NAddr addr, Nybble n)
  7. {
  8.     char    t;
  9.     
  10.     t = mem[addr >> 1] & ((addr & 1) ? 0x0f : 0xf0);
  11.     n &= 0xf;
  12.     if (addr & 1)
  13.         n <<= 4;
  14.         
  15.     mem[addr >> 1] = t | n;
  16. }
  17. #endif
  18.  
  19. #define NSIZE 524288
  20. #define BSIZE (NSIZE / 2)
  21.  
  22. Bitmap    completed;
  23. int    dopause = 0;
  24.  
  25. #ifdef ANSI
  26. main(int argc, char **argv)
  27. #else
  28. main(argc, argv)
  29. int    argc;
  30. char    **argv;
  31. #endif
  32. {
  33.     char    *p;
  34.     int    n;
  35.     int    s, e;
  36.     char    buf[80];
  37.     char    *mem, *malloc();
  38.     
  39.     if ((argc > 1) && !strcmp(argv[1], "-p"))
  40.         dopause = 1;
  41.         
  42.     if ((mem = malloc(BSIZE)) == NULL) {
  43.         fprintf(stderr, "malloc failed\n");
  44.         exit(1);
  45.     }
  46.     
  47.     if ((completed = malloc(BITS(NSIZE))) == NULL) {
  48.         fprintf(stderr, "malloc failed\n");
  49.         goto done;
  50.     }
  51.     
  52.     memset(completed, 0, BITS(NSIZE));
  53.     if ((n = open("rom", O_RDONLY)) < 0) {
  54.         fprintf(stderr, "open failed\n");
  55.         goto done2;
  56.     }
  57.     
  58.     if (read(n, mem, BSIZE) <= 0/* != BSIZE*/) {
  59.         fprintf(stderr, "read failed\n");
  60.         close(n);
  61.         goto done2;
  62.     }
  63.     
  64.     (void) close(n);
  65.     while (1) {
  66.         printf("start?\n");
  67.         if (fgets(buf, sizeof(buf), stdin) == NULL)
  68.             break;
  69.             
  70.         if (sscanf(buf, "%x", &s) != 1)
  71.             break;
  72.             
  73.         printf("end?\n");
  74.         if (fgets(buf, sizeof(buf), stdin) == NULL)
  75.             break;
  76.             
  77.         if (sscanf(buf, "%x", &e) != 1)
  78.             break;
  79.             
  80.         Disassemble(mem, s, e, stdout);
  81.     }
  82. done2:
  83.     free(completed);
  84. done:    
  85.     free(mem);
  86.     exit(0);
  87. }
  88.